package com.hb.trade.client.project;

import com.hb.core.pojo.project.evaluation.dto.*;
import com.hb.core.pojo.project.evaluation.vo.*;
import org.fzzn.core.model.msg.Message;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;
import java.util.Map;

/**
 * @author jinhaolin
 * @date 2022/4/14 0014 14:34
 **/
@FeignClient("hb-project")
public interface EvaluationClient {

    /**
     * 获取评审项下的所有评审点的评审结果
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/allResultOfReviewPoint")
    Message<EvaluationReviewItemResultVO> allResultOfReviewPoint(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);

    /**
     * 批量通过
     * @param evaluationSubmitScoreParamList
     * @return
     */
    @PostMapping("/evaluation/batchPass")
    Message<Boolean> batchPass(@RequestBody List<EvaluationSubmitScoreParam> evaluationSubmitScoreParamList);

    /**
     * 批量拒绝
     * @param evaluationSubmitScoreParamList
     * @return
     */
    @PostMapping("/evaluation/batchRefuse")
    Message<Boolean> batchRefuse(@RequestBody List<EvaluationSubmitScoreParam> evaluationSubmitScoreParamList);

    /**
     * 保存单个企业的单个评审点的评标结果
     * @param evaluationSubmitScoreParam
     * @return
     */
    @PostMapping("/evaluation/saveScoreOfReviewPointSingleOrg")
    Message<Boolean> saveScoreOfReviewPointSingleOrg(@RequestBody EvaluationSubmitScoreParam evaluationSubmitScoreParam);

    /**
     * 保存批量评标结果
     * @param evaluationSubmitScoreParamList
     * @return
     */
    @PostMapping("/evaluation/saveScoreBatch")
    Message<Boolean> saveScoreBatch(@RequestBody List<EvaluationSubmitScoreParam> evaluationSubmitScoreParamList);

    /**
     * 提交单个评审点的评标结果
     * @return
     */
    @PostMapping("/evaluation/submitScoreOfReviewPoint")
    Message<Boolean> submitScoreOfReviewPoint(@RequestBody List<EvaluationSubmitScoreParam> evaluationSubmitScoreParamList);

    /**
     * 提交单个评审点的评标结果（组长对报价评审）
     * @return
     */
    @PostMapping("/evaluation/submitScoreOfReviewPointByOffer")
    Message<Boolean> submitScoreOfReviewPointByOffer(@RequestBody List<EvaluationSubmitScoreParam> evaluationSubmitScoreParamList);

    /**
     * 提交并共享单个评审点的评标结果
     * @return
     */
    @PostMapping("/evaluation/submitAndShareScoreOfReviewPoint")
    Message<Boolean> submitAndShareScoreOfReviewPoint(@RequestBody List<EvaluationSubmitScoreParam> evaluationSubmitScoreParamList);

    /**
     * 提交评审项下所有评审点的评标结果
     * @return
     */
    @PostMapping("/evaluation/submitScoreOfReviewItem")
    Message<Boolean> submitScoreOfReviewItem(@RequestBody List<EvaluationSubmitScoreParam> evaluationSubmitScoreParamList);

    /**
     * 获取项目及标段信息
     * @param evaluationBidSectionParam
     * @return
     */
    @PostMapping("/evaluation/bidProjectAndSectionInfo")
    Message<EvaluationProjectAndSectionInfoVO> bidProjectAndSectionInfo(@RequestBody EvaluationBidSectionParam evaluationBidSectionParam);

    /**
     * 获取评标流程节点
     * @param evaluationBidSectionParam
     * @return
     */
    @PostMapping("/evaluation/reviewItemFlowNodes")
    Message<EvaluationReviewItemFlowNodesVO> reviewItemFlowNodes(@RequestBody EvaluationBidSectionParam evaluationBidSectionParam);

    /**
     * 获取线下评标流程节点
     * @param evaluationBidSectionParam
     * @return
     */
    @PostMapping("/evaluation/reviewItemFlowNodesOffline")
    Message<EvaluationReviewItemFlowNodesVO> reviewItemFlowNodesOffline(@RequestBody EvaluationBidSectionParam evaluationBidSectionParam);

    /**
     * 获取可复用评审信息
     * @param evaluationReviewPointParam
     * @return
     */
    @PostMapping("/evaluation/reusableScoreOfReviewPoint")
    Message<List<EvaluationReusableScoreItemVO>> reusableScoreOfReviewPoint(@RequestBody EvaluationReviewPointParam evaluationReviewPointParam);


    /**
     * 获取汇总结果
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/resultSummaryInfo")
    Message<EvaluationResultSummaryVO> resultSummaryInfo(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);

    /**
     * 确认汇总
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/confirmResultSummary")
    Message<Boolean> confirmResultSummary(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);

    /**
     * 复核
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/recheckResultSummary")
    Message<Boolean> recheckResultSummary(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);


    /**
     * 查询报价评审信息
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/findQuotationReview")
    Message<Map> findQuotationReview(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);


    /**
     * 非组长确认报价
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/confirmOffer")
    Message<String> confirmOffer(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);


    /**
     * 查询专家报价信息提交状态
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/selectOfferReview")
    Message<List<EvaluationSecondDTO>> selectOfferReview(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);


    /**
     * 结束评标
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/endReview")
    Message<String> endReview(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);

    /**
     * 结束评标
     * @param evaluationReviewItemParam
     * @return
     */
    @PostMapping("/evaluation/finalSummaryReview")
    Message<Map> finalSummaryReview(@RequestBody EvaluationReviewItemParam evaluationReviewItemParam);

    /**
     *
     * @Description:评标专家系统生成汇总表格
     * @Author: zhongdl
     * @Date:2022/4/22 9:52
     * @param evaluationSummaryAddDTO:
     * @return: {@link Message< Boolean> }
     **/
    @PostMapping("/evaluation/generateEvaluationSummary")
    Message<Boolean> generateEvaluationSummary(@RequestBody EvaluationSummaryAddDTO evaluationSummaryAddDTO);

     /**
      *
      * @Description:更新表格的汇总状态
      * @Author: zhongdl
      * @Date:2022/4/22 10:09
      * @param evaluationSummaryAddDTO:
      * @return: {@link Message< Boolean> }
      **/
    @PostMapping("/evaluation/updateEvaluationSummaryStatus")
    Message<Boolean> updateEvaluationSummaryStatus(@RequestBody EvaluationSummaryAddDTO evaluationSummaryAddDTO);
    /**
     *
     * @Description:专家汇总详情
     * @Author: zhongdl
     * @Date:2022/4/22 10:18
     * @param evaluationSummaryAddDTO:
     * @return: {@link Message< EvaluationSummaryDTO> }
     **/
    @PostMapping("/evaluation/evaluationSummaryDetails")
    Message<EvaluationSummaryDTO> evaluationSummaryDetails(@RequestBody EvaluationSummaryAddDTO evaluationSummaryAddDTO);

    /**
     * 项目信息中的开标一览表
     * @param sectionParam
     * @return
     */
    @PostMapping("/evaluation/openingSchedule")
    Message<EvaluationOpeningScheduleVO> openingSchedule(@RequestBody EvaluationBidSectionParam sectionParam);
}
